// 粗糙的报错分类，这里应该越来越少
const roughCodeMap = {
  500: '内核错误', // 内核错误
  601: '参数错误', // 参数错误
  602: '执行错误', // next-core逻辑错误
};
// 精细的报错
const exactCodeMap = {
  // 603 +
  603: '未构成闭合轮廓',
  604: '超出条件限制',
  // 8xx 是草图类报错
  800: '无法用由草图自身构建的对象在该草图上投影',
  // 9xx
  // 10xx
};

export const getErrorMessage = (error: any) => {
  const errorCode = error?.code;

  // 如果错误代码已定义在精细映射表中，使用对应的中文提示
  if (errorCode != null && errorCode in exactCodeMap) {
    return `${exactCodeMap[errorCode]}`;
  }

  // 根据报错分类生成报错信息
  if (errorCode != null && errorCode in roughCodeMap) {
    let codeMsg = `${roughCodeMap[errorCode]}`;

    if (error?.message) {
      codeMsg += ` - ${error.message}`;
    }

    return `${codeMsg}`;
  }

  // 未做处理的错误
  let codeMsg = errorCode ? `错误代码 ${errorCode}` : `未知错误`;

  if (error?.message) {
    codeMsg += ` - ${error.message}`;
  }

  return `${codeMsg}`;
};
